Adaptive decimation filter

ABSTRACT

An initial decimation filter is applied to an original frame to generate a decimated frame. An optimized prediction filter is extracted from both the decimated frame and the original frame, while the initial decimation filter is held fixed. A predicted from is generated from the optimized prediction filter and the decimated frame, and an optimize decimation filter is extracted from the decimated frame and the predicted frame, while the optimized prediction filter remains fixed.

RELATED APPLICATIONS

The present application is related to the following commonly-owned, concurrently-filed application: application Ser. No. 12/245,672, filed Oct. 3, 2008, entitled “Extracting Multiple Classified Adaptive Decimation Filters.”

FIELD OF THE INVENTION

This invention relates generally to data processing, and more particularly to video encoding.

COPYRIGHT NOTICE/PERMISSION

A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. The following notice applies: Copyright© 2008, Sony Electronics Inc., All Rights Reserved.

BACKGROUND OF THE INVENTION

An important and fundamental problem in various video processing applications, such as compression and zooming, is decimation and prediction. Decimation involves generating a smaller version of a source data. A common example is video compression, which uses a decimation filter to decimate an original frame in order to create a decimated frame. To decompress the video frame, a prediction filter generates a target frame from the decimated frame. The quality of the target frame may be expressed by measuring the difference between the original frame and the target frame, which is the prediction error. One existing process used to improve the quality of the target frame is to use an adaptive prediction filter. An adaptive prediction filter is modified with respect to a corresponding decimated frame to improve the quality of the target frame, while the decimation filter remains fixed. A classified prediction filter is a adaptive prediction filter that applies different filters/classes to different pixels/regions in an image.

FIG. 2A illustrates a fixed decimation filter with a decimation factor of ¼ that reduces the original frame to a decimated frame one quarter the size of the original. Original pixels 205 (unfilled) are each assigned a decimation filter coefficient of ¼. In other words, to generate the decimated pixel 210, original pixels 205 will be averaged. FIG. 2B illustrates a fixed decimation filter with a decimation factor of 1/9. Original pixels 250 (unfilled, plus an original pixel in the same location as target pixel 255) each contribute 1/9 to the value of decimated pixel 255. After applying the decimation filter illustrated in FIG. 2A or 2B, the source data has been reduced in size consistent with the decimation factor.

SUMMARY OF THE INVENTION

An initial decimation filter is applied to an original frame to generate a decimated frame. An optimized prediction filter is extracted from both the decimated frame and the original frame, while the initial decimation filter is held fixed. A predicted frame is generated from the optimized prediction filter and the decimated frame, and an optimized decimation filter is extracted from the decimated frame and the predicted frame, while the optimized prediction filter remains fixed.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram illustrating a overview of the operation of an embodiment of an adaptive decimation filter according to the invention;

FIGS. 2A and 2B are diagrams illustrating fixed decimation filters as known in the art;

FIG. 3 is a diagram illustrating an adaptive decimation filter according to an embodiment of the invention;

FIG. 4 is a data flow diagram illustrating the operation of an adaptive decimation filter according to an embodiment of the invention;

FIG. 5 is a flow diagram of a filter optimization method to be performed by a computer according to an embodiment of the invention;

FIG. 6 is a diagram illustrating the operation of an adaptive decimation filter according to an embodiment of the invention;

FIGS. 7A and 7B are flow diagrams of filter optimization methods to be performed by a computer according to embodiments of the invention;

FIG. 8 is a diagram illustrating the operation of an adaptive decimation filter according to an embodiment of the invention;

FIG. 9 is a diagram illustrating the operation of an adaptive decimation filter according to an embodiment of the invention;

FIG. 10 is a diagram illustrating the operation of an adaptive decimation filter according to an embodiment of the invention:

FIGS. 11A and 11B are diagrams of a computer environment suitable for practicing the invention;

FIG. 12 is a diagram of a classified adaptive decimation fitter according to an embodiment of the invention;

FIG. 13 is a flow diagram of a multiple decimation filter extraction method to be performed by a computer according to an embodiment of the invention;

FIG. 14 is a flow diagram of another multiple decimation filler extraction method to be performed by a computer according to an embodiment of the invention; and

FIG. 15 is a flow diagram of an initial estimation of decimation filters method to be performed by a computer according to an embodiment of the invention.

DETAILED DESCRIPTION OF THE INVENTION

In the following detailed description of embodiments of the invention, reference is made to the accompanying drawings in which like references indicate similar elements, and in which is shown by way of illustration specific embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that logical, mechanical, electrical, functional and other changes may be made without departing from the scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims.

Beginning with an overview of the operation of the invention, FIG. 1 illustrates one embodiment of adaptive decimation filtering. Original data 100 is encoded at encoder 105 using adaptive prediction and decimation filters. The original data 100 may be video data from a BluRay player, which a user wishes to view on a standard definition television such as device 120. To accomplish this, encoder 105 may zoom data 100 to produce zoomed data 110, which device 120 is able to decode and display at the appropriate aspect ratio. The encoded data from encoder 105 may take the form of compressed data 115, which encoder 105 may cause to be sent over network 125 to device 130 to decode and display. For example, data 100 may be live video of a sporting event.

The predictive strength of a prediction filter or a decimation filter may understood in terms of how similar an original frame is to a reconstruction of that original frame using the prediction filter. Optimizing either a prediction filter or a decimation filter is the process of adjusting the coefficients that make up the filter in a way that decreases the difference between the source frame and the target frame. In other words, reducing the prediction error associated with the target frame.

Optimizations to a decimation filter are present, indirectly, in the target frame by way of the decimated frame that the prediction filter uses to generate the target frame. As an example, suppose a prediction filter L is used to generate two target frames, P and P′. To generate the target frames, L is applied to two decimated frames, D and D′, which were generated by two decimation filters, H and H′. Further suppose that the first target frame, P, has an average prediction error of 0.05 when compared to original image I, while the second target frame P′ has an average prediction error of 0.10 when compared to I. Since the same prediction filter L is used to produce both target frames, the difference in accuracy is attributable to the decimated frames and thus the different decimation filters.

FIG. 4 is a data flow diagram illustrating the operation of an adaptive decimation filter according to an embodiment of the invention. Encoder context 400 includes original frames 410 and decimated frames 425, which are decimated 415 by an encoder such as encoder 105 and predicted 420 to improve a prediction by measuring the error of the prediction. Encoded data 430 is sent to decoder 405. For example, over network 125. Decoder 105 uses decimated frames 435 and filter coefficients also included in the encoded data 430 to predict 440 predicted frames 445. Predicted frames 445 may be displayed to a user.

Next, the particular methods of the invention are described in terms of computer software with reference to a series of flow diagrams. FIGS. 5 and 7 are flow diagrams illustrating methods according to embodiments of an adaptive decimation filter. Encoder 105 may perform the methods illustrated in FIGS. 5 and 7. The methods constitute computer programs made up of machine-executable instructions illustrated as blocks (acts) 505 until 525 in FIG. 5 and blocks 705 to 740 in FIG. 7. Describing the methods by reference to a flow diagram enables one skilled in the art to develop such programs including such instructions to carry out the methods on suitably configured machines (the processor of the machine executing the instructions from machine-readable storage media, including memory such as RAM) [computerized clients (the processor of the clients executing the instructions from machine-readable media). Similarly, the methods to be performed by the server constitute computer programs also made up of machine-executable instructions. Describing the methods by reference to flow diagrams enables one skilled in the art to develop programs including instructions to carry out the methods on a suitable computerized server (the processor of the server executing the instructions from machine-readable storage media).] The machine-executable instructions may be written in a computer programming language or may be embodied in firmware logic. If written in a programming language conforming to a recognized standard, such instructions can be executed on a variety of hardware platforms and for interface to a variety of operating systems. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein. Furthermore, it is common in the art to speak of software, in one form or another (e.g., program, procedure, process, application, module, logic . . . ), as taking an action or causing a result. Such expressions are merely a shorthand way of saying that execution of the software by a computer causes the processor of the computer to perform an action or produce a result. It will be appreciated that more or fewer processes may be incorporated into the methods illustrated in FIGS. 5 and 7 without departing from the scope of the invention and that no particular order is implied by the arrangement of blocks shown and described herein.

FIG. 3 is a diagram illustrating adaptive decimation filtering according to an embodiment of the invention. Pixel tap 305 includes pixel regions 325 and 330 and corresponds, through the decimation filter, to decimated pixel 310. To improve the predictive strength of the decimation filter, encoder 105 may optimize the decimation filter by changing the number of pixels included in a pixel tap or the coefficients corresponding to pixels in a pixel tap used to generate a decimated pixel. For example, in a fixed decimation filter with a decimation factor of ¼, the decimation filter may use a pixel tap such as pixel region 325. Encoder 105 may expand this initial tap to create pixel tap 305, which incorporates additional pixels into the tap. Pixels in region 325 may have coefficients of 0.125, while pixels in region 330 may have coefficients of 0.05, and pixels in corners of the tap may have coefficients of 0.025. By increasing the size of pixel tap 305, more original data is available to generate decimated pixel 310, which in turn may improve the quality of a target frame. The encoder may also vary the filter coefficients according to which original pixels produce a better prediction.

For example, encoder 105 may also modify a pixel tap to exploit underlying features of the original frame. Pixel tap 315, for example, is elongated in the horizontal direction, and corresponds to decimated pixel 320. The region of the original frame from which pixel tap 315 is drawn may contain a horizontal feature (e.g., a brick in a wall), in which case a horizontally elongated pixel tap such as pixel tap 315 may produce a decimated pixel 320 which provides greater predictive strength to a prediction filter.

FIG. 5 illustrates a filter optimization method according to an embodiment of the invention. Encoder 105 may perform filter optimization method 500 to optimize an adaptive decimation filter and an adaptive prediction filter. One obstacle to optimizing both the decimation filter and the prediction filter is that a simultaneous optimization would be a non-linear process. The prediction filter depends on the decimated frame, which is obtained with the decimation filter. An optimized decimation filter provides high prediction strength, where prediction strength depends directly on the prediction filter. The non-linearity of the relationship may be expressed as a function of the prediction and decimation filters: I ^(D) =H·I  (1) where I^(D) is the decimated frame, H is the decimation filter, and I is the original frame. The prediction filter may be defined as: P=L(H)·I ^(D)  (2) where P is a target frame and prediction filter L is a function of H. Thus, target frame P may be expressed as: P=L(H)H·I  (3) and prediction error E may be expressed as: E=(I−P)²=(I−L(H)·H·I)²  (4) which is a nonlinear function in L and H. To obtain optimal prediction and decimation filters, prediction error F is minimized. Since the error function is nonlinear, no direct method to extract optimal solutions for both the prediction and decimation filters is available.

In the embodiment illustrated by FIG. 5, a recursive process is used to optimizing the prediction and decimation filters. This process uses a linear error function. At block 505, the method 500 selects an initial decimation filter. For example, initial decimation filter may be a fixed decimation filter. At block 515, the method 500 extracts an optimized prediction filter while holding the decimation filter fixed. By keeping the decimation filter fixed, the error function becomes quadratic. Thus, minimizing the prediction error yields linear equations for a solution of the filter, which allows the method to extract an optimized prediction filter for the current decimation filter. Extracting an optimized prediction filter is described in greater detail below in conjunction with FIG. 7.

At block 520, the method 500 extracts an optimized decimation filter while holding the prediction filter extracted in block 515 fixed. By holding the prediction filter fixed, the error function becomes quadratic, allowing the method to extract an optimized decimation filter for the current prediction filter. If at decision 525 the method determines the optimization is complete, the method returns control to, for example, encoder 105. Otherwise, the method returns to block 515 to further optimize the filters.

By using the recursive process described above, the method 500 incrementally improves both the decimation filter and the prediction filter. Since prediction strength depends upon the adaptability of both filters, changes to one filter may make new improvements possible in the other filter.

FIG. 6 illustrates the operation of the filter optimization method illustrated in FIG. 5. Passes 600, 630, and 655 represent sequential optimizations of prediction and decimation filters. The method 500 decimates original frame 605 with an initial decimation filter 610 to produce decimated frame 620. The method 500 extracts an optimized prediction filter 615 from decimated frame 620, as described in greater detail below in conjunction with FIG. 7. During pass 630, the method 500 extracts an optimized decimation filter 640 from original frame 605 while holding prediction filter 615 fixed. The method 500 generates a decimated frame 650 with decimation filter 640 and extracts an optimized prediction filter 645 while holding decimation filter 640 fixed. During pass 655, the method 500 extracts an optimized decimation filter 665 while holding prediction filter 645 fixed. The method 500 generates decimated frame 675 using decimation filter 665. The method 500 extracts an optimized prediction filter 670 using decimated frame 675. The method 500 determines that the results of optimization have saturated and relinquishes control, for example, to encoder 105.

FIG. 7 illustrates a method to be performed according to an embodiment of the invention. At block 705, the method 700 selects an initial decimation filter, such as a fixed decimation filter with the desired decimation factor. At block 710, the method 700 generates a decimated frame by applying the decimation filter to an original frame (e.g., a frame of video). At block 715, the method 700 generates classes for a prediction filter using the decimated frame using one of many processes known in the art. At block 720, the method 700 extracts a classified prediction filter while holding the decimation filter fixed. The method generates an optimized prediction filter by keeping the decimation filter as a fixed variable.

The notation used to describe the filter extraction process is described, followed by the process itself. The original frame signal level is denoted for an individual pixel {right arrow over (x)} as I({right arrow over (x)}). The decimated frame signal level is denoted for the decimated pixel {right arrow over (y)} as I^(D)({right arrow over (y)}), while the set of decimated pixels defined on the prediction filter tap for the prediction of target pixel {hacek over (x)}, where the j index runs over the filter tap of the prediction filter is {right arrow over (y)}_(j) ^({right arrow over (x)}).

The prediction of the original frame for the pixel xis P({right arrow over (x)}) and is defined in the following paragraph. The prediction filter corresponding to the prediction filter class u is denoted as L^(u).

The prediction filter is derived from the minimization of the prediction error, holding the decimation filter constant. The prediction for the pixel {right arrow over (x)} may be defined as:

$\begin{matrix} {{P\left( \overset{->}{x} \right)} = {\sum\limits_{j}{L_{j}^{u}{I^{D}\left( {\overset{->}{y}}_{j}^{\overset{->}{x}} \right)}}}} & (5) \end{matrix}$ while the prediction filter class for the pixel {hacek over (x)} may be defined as: u=S({right arrow over (x)})  (6) while the prediction error may be defined as:

$\begin{matrix} {e = {\sum\limits_{x}\left( {{I\left( \overset{->}{x} \right)} - {P\left( \overset{->}{x} \right)}} \right)^{2}}} & (7) \end{matrix}$ A least squares training solution involves computing a correlation matrix and observation vector over all pixels {right arrow over (x)} such that S({right arrow over (x)})=u. The least squares solution yields a stable solution when the set of pixels is large enough for each filter class. The method 700 extracts the prediction filter L^(v) for some class v from prediction error minimization with fixed decimation using a least squares solution:

$\begin{matrix} {{\frac{\delta\; e}{\delta\; L_{k}^{v}}❘_{H}} = 0} & (8) \\ {\sum\limits_{\overset{->}{x}}{\left( {{I\left( \overset{->}{x} \right)} - {P\left( \overset{->}{x} \right)}} \right){\sum\limits_{j}{\frac{\delta\; L_{j}^{u}}{\delta\; L_{k}^{v}}{I^{D}\left( {\overset{->}{y}}_{j}^{\overset{->}{x}} \right)}}}}} & (9) \\ {{\sum\limits_{\{{{\overset{->}{x}❘v} = {S(\overset{->}{x})}}\}}{\left( {{I\left( \overset{->}{x} \right)} - {P\left( \overset{->}{x} \right)}} \right){I^{D}\left( {\overset{->}{y}}_{k}^{\overset{->}{x}} \right)}}} = 0} & (10) \\ {{\sum\limits_{\{{{\overset{\_}{x}❘v} = {S(\overset{\_}{x})}}\}}{{I\left( \overset{->}{x} \right)}{I^{D}\left( {\overset{->}{y}}_{k}^{\overset{\_}{x}} \right)}}} = {\sum\limits_{\{{{\overset{->}{x}❘v} = {S(\overset{\_}{x})}}\}}{\sum\limits_{j}{L_{j}^{v}{I^{D}\left( {\overset{->}{y}}_{j}^{\overset{->}{x}} \right)}{I^{D}\left( {\overset{->}{y}}_{k}^{\overset{->}{x}} \right)}}}}} & (11) \\ {b_{k}^{v} = {\sum\limits_{j}{L_{j}^{v}A_{j,k}^{v}}}} & (12) \end{matrix}$ The optimized prediction filter for class v may be given by:

$\begin{matrix} {{L^{v} = {\left( A^{v} \right)^{- I}b^{v}}}{where}} & (13) \\ {A_{j,k}^{v} = {\sum\limits_{\{{{\overset{->}{x}❘v} = {S(\overset{->}{x})}}\}}{{I^{D}\left( {\overset{->}{y}}_{j}^{\overset{->}{x}} \right)}{I^{D}\left( {\overset{->}{y}}_{k}^{\overset{->}{x}} \right)}}}} & (14) \end{matrix}$ is the correlation matrix for class v and

$\begin{matrix} {b_{k}^{v} = {\sum\limits_{\{{{\overset{->}{x}❘v} = {S(\overset{->}{x})}}\}}{{I\left( \overset{->}{x} \right)}{I^{D}\left( {\overset{->}{y}}_{k}^{\overset{->}{x}} \right)}}}} & (15) \end{matrix}$ is the observation vector for class v, resulting in v independent matrix equations, one for each class in the filter. The indexes {j, k} run over the prediction filter taps j=1,2, . . . T ₁ ,k=1,2 . . . T ₁  (16) with T₁ denoting the size of the prediction filter tap.

At block 725, the method 700 generates a predicted frame using the prediction filter and the decimated frame.

At block 730, the method 700 generates classes for the decimation filter from the target frame. The decimation classes may be defined on the original input data, or on the decimated data itself. The following process applies to deriving an adaptive decimation filter using a single class (mono-class). Deriving a multi-class adaptive decimation filter is described in greater detail below in conjunction with FIGS. 13-15.

At block 735, the method 700 extracts a classified decimation filter while holding the prediction filter fixed. The method 700 derives the decimation filter from the minimization of the prediction error, keeping the prediction filter fixed. The prediction for the pixel {hacek over (x)} may be defined as:

$\begin{matrix} {{P\left( \overset{->}{x} \right)} = {\sum\limits_{j}{L_{j}^{u}{I^{D}\left( {\overset{->}{y}}_{j}^{\overset{->}{x}} \right)}}}} & (17) \end{matrix}$ the prediction filter class map for the pixel {hacek over (x)} may be defined as: u=S({right arrow over (x)})  (18) the decimated image may be defined as:

$\begin{matrix} {{I^{D}\left( y_{j}^{\overset{->}{x}} \right)} = {\sum\limits_{n}{H_{n}{I\left( {\overset{->}{z}}_{n}^{{\overset{->}{y}}_{j}^{\overset{.}{x}}} \right)}}}} & (19) \end{matrix}$ the prediction for the pixel {hacek over (x)} expressed in terms of the decimation filter may be defined as:

$\begin{matrix} {{P\left( \overset{->}{x} \right)} = {\sum\limits_{j}{L_{j}^{u}{\sum\limits_{n}{H_{n}{I\left( {\overset{->}{z}}_{n}^{{\overset{\_}{y}}_{j}^{\overset{.}{x}}} \right)}}}}}} & (20) \end{matrix}$ and the prediction error may be defined as:

$\begin{matrix} {e = {\sum\limits_{\overset{\rightarrow}{x}}\left( {{I\left( \overset{\rightarrow}{x} \right)} - {P\left( \overset{\rightarrow}{x} \right)}} \right)^{2}}} & (21) \end{matrix}$

Accordingly, the method 700 extracts the decimation filter H from prediction error minimization with a fixed prediction filter, as follows:

$\begin{matrix} {\left. \frac{\delta\; e}{\delta\; H_{m}} \right|_{L} = 0} & (22) \\ {{\sum\limits_{\overset{\rightarrow}{x}}{\left( {{I\left( \overset{\rightarrow}{x} \right)} - {P\left( \overset{\rightarrow}{x} \right)}} \right){\sum\limits_{j}{L_{j}^{u}{\sum\limits_{n}{\frac{\delta\; H_{n}}{\delta\; H_{m}}{I\left( {\overset{\rightarrow}{z}}_{n}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}}}}} = 0} & (23) \\ {{\sum\limits_{\overset{\rightarrow}{x}}{\left( {{I\left( \overset{\rightarrow}{x} \right)} - {P\left( \overset{\rightarrow}{x} \right)}} \right){\sum\limits_{j}{L_{j}^{u}{I\left( {\overset{\rightarrow}{z}}_{m}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}}} = 0} & (24) \\ {{\sum\limits_{\overset{\rightarrow}{x}}{\sum\limits_{j}{{I\left( \overset{\rightarrow}{x} \right)}L_{j}^{u}{I\left( {\overset{\rightarrow}{z}}_{m}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}} = {\sum\limits_{\overset{\rightarrow}{x}}{\sum\limits_{j}{\sum\limits_{k}{L_{k}^{u}{\sum\limits_{n}{H_{n}{I\left( {\overset{\rightarrow}{z}}_{n}^{{\overset{\rightarrow}{y}}_{k}^{\overset{\rightarrow}{x}}} \right)}L_{j}^{u}{I\left( {\overset{\rightarrow}{z}}_{m}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}}}}}} & (25) \\ {{\sum\limits_{\overset{\rightarrow}{x}}{{I\left( \overset{\rightarrow}{x} \right)}{F_{m}\left( \overset{\rightarrow}{x} \right)}}} = {\sum\limits_{n}{H_{n}{\sum\limits_{\overset{\rightarrow}{x}}{{F_{n}\left( \overset{\rightarrow}{x} \right)}{F_{m}\left( \overset{\rightarrow}{x} \right)}}}}}} & (26) \\ {where} & \; \\ {{F_{m}\left( \overset{\rightarrow}{x} \right)} = {\sum\limits_{j}{L_{j}^{u}{I\left( {\overset{\rightarrow}{z}}_{m}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}} & (27) \end{matrix}$ The decimation filter H is given by:

$\begin{matrix} {H = {(A)^{- 1}b}} & (28) \\ {where} & \; \\ {A_{n,m} = {\sum\limits_{\overset{\rightarrow}{x}}{{F_{n}\left( \overset{\rightarrow}{x} \right)}{F_{m}\left( \overset{\rightarrow}{x} \right)}}}} & (29) \end{matrix}$ defines the correlation matrix and

$\begin{matrix} {b_{m} = {\sum\limits_{\overset{\rightarrow}{x}}{{I\left( \overset{\rightarrow}{x} \right)}{F_{m}\left( \overset{\rightarrow}{x} \right)}}}} & (30) \end{matrix}$ defines the observation vector. The indexes {m,n} run over the decimation filter taps: m=1,2, . . . T ₂ , n=1,2 . . . T ₂  (31) with T₂ denoting the size of the decimation filter tap.

The method 700 generates the decimation filter H using the least squares solutions above, given the fixed classified prediction filter. The function F_(n)({right arrow over (x)}) incorporates the effect of the classified prediction filter which the method 700 generates at block 720. The function F_(n)({right arrow over (x)}) provides a weighted average of the original data and the classified prediction filter L from block 720. The weighted average is over all of the tap positions {j} of the classified prediction filter:

$\begin{matrix} {{F_{n}\left( \overset{\rightarrow}{x} \right)} = {\sum\limits_{j}{L_{j}^{S{(\overset{\rightarrow}{x})}}{I\left( {\overset{\rightarrow}{z}}_{n}^{y_{j}^{\overset{\rightarrow}{x}}} \right)}}}} & (32) \end{matrix}$

The function F_(n)({right arrow over (x)}) may be referred to as the L-weighted input signal. At decision 740, the method 700 determines whether to further optimize the filters or to terminate. In one embodiment, the method 700 may repeat the process a predetermined number of times. Empirically, the result saturates after 4 or 5 passes using a decimation factor of 1/9, so the method 700 may terminate after 4 or 5 passes.

FIG. 8 is a diagram illustrating the optimization of a two-dimensional (2D) prediction filter and a decimation filter. The prediction filter is 2D in that it generates a predicted frame using only decimated pixels from the same time instant as the target (predicted) frame. Decimation filter 810 generates decimated frame 805 from original frame 800. 2D prediction filter 815 uses decimated pixel tap 810 to reconstruct target pixel 820.

FIG. 9 is a diagram illustrating the optimization of a three-dimensional (3D) prediction filter and decimation filter for progressive/non-interlaced video frames. Decimation filters 905 and 935 generate decimated frames 910 and 945 from original frames 900 and 925. Prediction filter 920 is 3D in that it uses decimated taps in the decimated frame corresponding to the target frame and in at least one decimated frame offset in time from the target frame. For example, prediction filter 920 uses decimated pixel tap 915 from offset decimated frame 910 and decimated pixel tap 950 in decimated frame 945 to reconstruct target pixel 930.

FIG. 10 is a diagram illustrating the optimization of three-dimensional (3D) prediction filters and decimation filters for interlaced video data where the frame is separated into two fields, offset vertically. Generally, the two fields from a given frame are separated in time by 1/60 of a second and are shifted vertically by one row of pixels. Each frame of video data is represented by two fields of interlaced video data. In FIG. 10, fields 1005 and 1015 form the target frame. In this embodiment, each field has a corresponding decimation filter. Fields 1005 and 1015 in the target frame have a corresponding 3D prediction filter. Prediction filter 1065 generates target pixel 1045 using decimated pixel taps 1035 and 1040 in decimated fields 1020 and 1025. Decimated field 1025 corresponds chronologically to the target field 1005. Decimated field 1020 corresponds chronologically to the second field 1000 of the previous frame of video data. Prediction filter 1070 generates target pixel 1060 using decimated pixel taps 1055 and 1050 in decimated fields 1030 and 1025, respectively. Decimated pixel tap 1055 corresponds chronologically to the target field 1015, while decimated pixel frame 1050 corresponds chronologically to the previous field 1005 in the target frame.

FIG. 7B is a flow diagram illustrating a method of optimizing classified adaptive decimation filters according to an embodiment of the invention. FIGS. 7A and 7B in that FIG. 7B incorporates block 730. At block 730, the method 750 generates classes for the decimation filter. Also, at block 735, the method extracts a classified filter using the classes. Prediction using classified decimation filters may be defined as:

$\begin{matrix} {{P\left( \overset{\rightarrow}{x} \right)} = {\sum\limits_{j}{L_{j}^{u}{I^{D}\left( {\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}} \right)}}}} & (33) \end{matrix}$ where the prediction map is given by: u=S({right arrow over (x)})  (34) The decimated image is given by:

$\begin{matrix} {{I^{D}\left( y_{j}^{\overset{\rightarrow}{x}} \right)} = {\sum\limits_{n}{H_{n}^{v}{I\left( {\overset{\rightarrow}{z}}_{n}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}} & (35) \end{matrix}$ The decimation class map is: v=D({right arrow over (y)} _(j) ^({right arrow over (x)}))  (36) The prediction may be expressed in terms of the decimation filter as:

$\begin{matrix} {{P\left( \overset{\rightarrow}{x} \right)} = {\sum\limits_{j}{L_{j}^{u}{\sum\limits_{n}{H_{n}^{v}{I\left( {\overset{\rightarrow}{z}}_{n}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}}}} & (37) \end{matrix}$ The prediction error is the difference between the image to be predicted and the prediction:

$\begin{matrix} {e = {\sum\limits_{\overset{\rightarrow}{x}}\left( {{I\left( \overset{\rightarrow}{x} \right)} - {P\left( \overset{\rightarrow}{x} \right)}} \right)^{2}}} & (38) \end{matrix}$

The prediction error is a function of the prediction and decimation filters, and the prediction and decimation class map. This dependency is expressed as e(L,H,C,D). The class maps are usually fixed and determined by some other method, so the dependency of the prediction error on the filters only is expressed as: e(L,H). In other embodiments, other classification methods may be used.

The multiple classified decimation filters {H^(v),v=0,1,2 . . . M−1} are derived from the minimization of the prediction error. This minimization is obtained by setting the variation of the prediction error to zero while keeping the prediction error fixed:

$\begin{matrix} {\left. \frac{\delta\;{e\left( {L,H} \right)}}{\delta\; H_{m}^{t}} \right|_{L} = 0} & (39) \end{matrix}$ Therefore, the mono-class decimation described above primarily in conjunction with FIG. 7 may be extended to multi-class decimation using the following process:

$\begin{matrix} {{\sum\limits_{\overset{\rightarrow}{x}}{\left( {{I\left( \overset{\rightarrow}{x} \right)} - {P\left( \overset{\rightarrow}{x} \right)}} \right){\sum\limits_{j}{L_{j}^{u}\frac{\delta\; H_{n}^{v}}{\delta\; H_{m}^{t}}{I\left( {\overset{\rightarrow}{z}}_{n}^{y_{j}^{\overset{\rightarrow}{x}}} \right)}}}}} = 0} & (40) \\ {{\sum\limits_{\overset{\rightarrow}{x}}{\left( {{I\left( \overset{\rightarrow}{x} \right)} - {P\left( \overset{\rightarrow}{x} \right)}} \right){\sum\limits_{\{{{j|t} = {D{(y_{j}^{\overset{\rightarrow}{x}})}}}\}}{L_{j}^{u}{I\left( {\overset{\rightarrow}{z}}_{m}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}}} = 0} & (41) \end{matrix}$ Applying the prediction defined in equation 37, the following is obtained for equation 40:

$\begin{matrix} {{\sum\limits_{\overset{\rightarrow}{x}}{\sum\limits_{\{{{j|t} = {D{(y_{j}^{\overset{\rightarrow}{x}})}}}\}}{{I\left( \overset{\rightarrow}{x} \right)}L_{j}^{u}{I\left( {\overset{\rightarrow}{z}}_{m}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}} = {\sum\limits_{\overset{\rightarrow}{x}}{\sum\limits_{k}{L_{k}^{u}{\sum\limits_{n}{H_{n}^{v}{I\left( {\overset{\rightarrow}{z}}_{n}^{y_{j}^{\overset{\rightarrow}{x}}} \right)}{\sum\limits_{\{{{j|t} = {D{(y_{j}^{\overset{\rightarrow}{x}})}}}\}}{L_{j}^{u}{I\left( {\overset{\rightarrow}{z}}_{m}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}}}}}}} & (42) \end{matrix}$ Which may also be expressed as:

$\begin{matrix} {{\sum\limits_{\overset{\rightarrow}{x}}{{I\left( \overset{\rightarrow}{x} \right)}{F_{m}^{t}\left( \overset{\rightarrow}{x} \right)}}} = {{\sum\limits_{n}{H_{n}^{t}{\sum\limits_{\overset{\rightarrow}{x}}{{F_{n}^{t}\left( \overset{\rightarrow}{x} \right)}{F_{m}^{t}\left( \overset{\rightarrow}{x} \right)}}}}} + {G_{m}^{t}\left( \left\{ H^{v \neq t} \right\} \right)}}} & (43) \\ {{Where}\text{:}} & \; \\ {{F_{m}^{t}\left( \overset{\rightarrow}{x} \right)} = {\sum\limits_{\{{{j|t} = {D{(y_{j}^{\overset{\rightarrow}{x}})}}}\}}{L_{j}^{u}{I\left( {\overset{\rightarrow}{z}}_{m}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}} & (44) \end{matrix}$ The last term in equation 43 is a class-coupling term, defined as:

$\begin{matrix} {{G_{m}^{t}\left( \left\{ H^{v \neq t} \right\} \right)} = {\sum\limits_{\overset{\rightarrow}{x}}{{F_{m}^{t}\left( \overset{\rightarrow}{x} \right)}{\sum\limits_{\{{k|{v \neq t}}\}}{L_{k}^{u}{\sum\limits_{n}{H_{n}^{v}\left( {\overset{\rightarrow}{z}}_{n}^{{\overset{\rightarrow}{y}}_{k}^{\overset{\rightarrow}{x}}} \right)}}}}}}} & (45) \end{matrix}$ Where the decimation class index v in equation in 45 is determined by the class map as follows: v=D(y _(h) ^({right arrow over (x)}))  (46) The solution structure in equation 43 has the form:

$\begin{matrix} {b_{m}^{t} = {{\sum\limits_{n}{H_{m}^{t}A_{n,m}^{t}}} + {G_{m}^{t}\left( \left\{ H^{v \neq t} \right\} \right)}}} & (47) \end{matrix}$ Where the b^(t) term is an observation vector for decimation class t:

$\begin{matrix} {b_{n}^{t} = {\sum\limits_{\overset{\rightarrow}{x}}{{F_{m}^{t}\left( \overset{\rightarrow}{x} \right)}{I\left( \overset{\rightarrow}{x} \right)}}}} & (48) \end{matrix}$ And the A^(t) term is a correlation matrix for decimation class t:

$\begin{matrix} {A_{n,m}^{t} = {\sum\limits_{\overset{\rightarrow}{x}}{{F_{n}^{t}\left( \overset{\rightarrow}{x} \right)}{F_{m}^{t}\left( \overset{\rightarrow}{x} \right)}}}} & (49) \end{matrix}$ The indexes {m, n} run over the decimation filter taps m=0, 1, . . . T−1, n=0, 1 . . . T−1, with T denoting the size of the decimation filter tap. The indexes {j, k} run over the prediction filter taps. The solution structure is valid for any three-dimensional classified prediction and decimation filter. In other words, it is valid for any number of classes, and for any prediction class map u=S({right arrow over (x)}) and decimation class map: v=D({right arrow over (y)}).

The solution for the multiple class decimation filters is given by equation 47, with the definition of the G^(t) term given in equation 45. The G^(t) term couples the filters from different decimation classes. G^(t) is designated a class-coupling term because it does not allow for each class to be solved independently. The class-coupling term increases the complexity extracting the decimation filters.

The function F_(m) ^(t)({right arrow over (x)}) is a quantity that incorporates the effect of the classified prediction filter. This function is referred to as the L-weighted input signal and is a sum of the input signal I(z_(m) ^(y) ^(j) _({hacek over (x)}) ) weighted with the prediction filter coefficient L_(j) ^(u). This sum is over all the prediction filter tap positions y_(j) ^({right arrow over (x)}) that belong to the same decimation class t=D(y_(j) ^({right arrow over (x)})). For a given target pixel {right arrow over (x)}, F_(m) ^(t)({right arrow over (x)}) may be zero for some classes.

The mono-class decimation filter described above primarily in conjunction with FIG. 7 is given by the matrix inversion of the correlation matrix H=(A)⁻¹b as follows, where the correlation matrix is defined:

$\begin{matrix} {A_{n,m} = {\sum\limits_{\overset{\rightarrow}{x}}{{F_{n}\left( \overset{\rightarrow}{x} \right)}{F_{m}\left( \overset{\rightarrow}{x} \right)}}}} & (50) \end{matrix}$ and the observation vector is defined:

$\begin{matrix} {{b_{m} = {\sum\limits_{\overset{\rightarrow}{x}}{{I\left( \overset{\rightarrow}{x} \right)}{F_{m}\left( \overset{\rightarrow}{x} \right)}}}}{where}} & (51) \\ {{F_{n}\left( \overset{\rightarrow}{x} \right)}{\sum\limits_{j}{L_{j}^{u}{I\left( {\overset{\rightarrow}{z}}_{n}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}} & (52) \end{matrix}$ is the L-weighted input signal for the mono-class case. Equation 52 is the least squares solution for extracting an optimized mono-class decimation filter, given some classified prediction filter. The least squares training solution may include computing the correlation matrix and observation vector over a set of samples, where the set of samples is all the pixels belonging to the class being considered. In the mono-class case, all the pixels are used, since there is only one class for the entire image. The least squares solution yields a stable solution as long as the set of samples is large enough for each filter case.

The class-coupling term does not allow for a direct solution for each class. In other words, the decimation filters for each class cannot be solved independently. FIG. 12 illustrates the dependence of the prediction of a pixel from multiple classes. Pixel 1205 is the pixel to be predicted with a prediction filter using a 9 pixel tap. The pixel tap for pixel 1205 includes pixels 1210 from a first decimation class, pixels 1215 from a second decimation class, and pixels 1220 from a third decimation class. FIG. 12 graphically illustrates the class-coupling term. Border 1225 divides class 0 from class 1. Border 1230 divides class 1 from class 2.

The prediction filter for the target pixel 1205 is expressed as:

$\begin{matrix} {{P\left( \overset{\rightarrow}{x} \right)} = {{\sum\limits_{j = 0}^{8}{L_{j}^{u}{I^{D}\left( {\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}} \right)}}} = {\sum\limits_{j = 0}^{8}{L_{j}^{u}{\sum\limits_{n}{H_{n}^{v}{I\left( {\overset{\rightarrow}{z}}_{n}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}}}}} & (53) \end{matrix}$ where H_(n) ^(v) is the classified decimation filter for class v at tap position n. This prediction may be separated into the contributions from the different classes shown in FIG. 7 b:

$\begin{matrix} {{P\left( \overset{\rightarrow}{x} \right)} = {{\sum\limits_{{j = 0},3,6}{L_{j}^{u}{\sum\limits_{n}{H_{n}^{0}{I\left( {\overset{\rightarrow}{z}}_{n}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}}} + {\sum\limits_{{j = 4},7,8}{L_{j}^{u}{\sum\limits_{n}{H_{n}^{l}{I\left( {\overset{\rightarrow}{z}}_{n}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}}} + {\sum\limits_{{j = 1},2,5}{L_{j}^{u}{\sum\limits_{n}{H_{n}^{2}{I\left( {\overset{\rightarrow}{z}}_{n}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}}}}} & (54) \end{matrix}$ this shows how the prediction for each target pixel is influenced by multiple decimation classes. This is the source of the class coupling term, G.

The L-weighted input signal F_(m) ^(t)({right arrow over (x)}) for decimation filter tap position 1235 may be defined as:

$\begin{matrix} {{{F_{m}^{t}\left( \overset{\rightarrow}{x} \right)} = {\sum\limits_{\{{{j❘t} = {D(y_{j}^{\overset{\rightarrow}{x}})}}\}}{L_{j}^{u}{I\left( {\overset{\rightarrow}{z}}_{m}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}}{{where}\text{:}}} & (55) \\ {{F_{2}^{0}\left( \overset{\rightarrow}{x} \right)} = {{L_{0}^{u}{I\left( {\overset{\rightarrow}{z}}_{2}^{{\overset{\rightarrow}{y}}_{0}^{\overset{\rightarrow}{x}}} \right)}} + {L_{3}^{u}{I\left( {\overset{\rightarrow}{z}}_{2}^{{\overset{\rightarrow}{y}}_{3}^{\overset{\rightarrow}{x}}} \right)}} + {L_{6}^{u}{I\left( {\overset{\rightarrow}{z}}_{2}^{{\overset{\rightarrow}{y}}_{6}^{\overset{\rightarrow}{x}}} \right)}}}} & (56) \\ {{F_{2}^{1}\left( \overset{\rightarrow}{x} \right)} = {{L_{4}^{u}{I\left( {\overset{\rightarrow}{z}}_{2}^{{\overset{\rightarrow}{y}}_{4}^{\overset{\rightarrow}{x}}} \right)}} + {L_{7}^{u}{I\left( {\overset{\rightarrow}{z}}_{2}^{{\overset{\rightarrow}{y}}_{7}^{\overset{\rightarrow}{x}}} \right)}} + {L_{8}^{u}{I\left( {\overset{\rightarrow}{z}}_{2}^{{\overset{\rightarrow}{y}}_{8}^{\overset{\rightarrow}{x}}} \right)}}}} & (57) \\ {{{F_{2}^{2}\left( \overset{\rightarrow}{x} \right)} = {{L_{1}^{u}{I\left( {\overset{\rightarrow}{z}}_{2}^{{\overset{\rightarrow}{y}}_{1}^{\overset{\rightarrow}{x}}} \right)}} + {L_{2}^{u}{I\left( {\overset{\rightarrow}{z}}_{2}^{{\overset{\rightarrow}{y}}_{2}^{\overset{\rightarrow}{x}}} \right)}} + {L_{5}^{u}{I\left( {\overset{\rightarrow}{z}}_{2}^{{\overset{\rightarrow}{y}}_{5}^{\overset{\rightarrow}{x}}} \right)}}}}{{such}\mspace{14mu}{that}\text{:}}} & (58) \\ {{{F_{2}^{t}\left( \overset{\rightarrow}{x} \right)} = 0}{t > 2}} & (59) \end{matrix}$ where equation 54 represents the contribution of class zero, equation 55 represents the contribution of class one, and equation 56 represents the contribution of class two to the L-weighted input signal.

This is unlike the case of multi-class prediction, where the prediction filters for each class may be solved independently. For multi-class prediction, the solution is the same matrix structure for each class, similar to the mono-class decimation filter case.

FIG. 13 illustrates multiple decimation filter extraction using an exact process. In one embodiment, the method 500 may execute the method 1300 at block 520. At block 1305, the method concatenates the decimation filters for each class into a single combined decimation filter. This combined filter may be obtained exactly from a matrix inverse solution. The combined decimation filter may be defined as: {H _(n) ^(t=0) ,H _(n) ^(t=1) , . . . H _(n) ^(t=M−1) }→Ĥ _(tT+n) =Ĥ _(p)  (60) The index t runs over the number of classes t=0, 1, 2 . . . M−1, where M is the total number of classes. The index n runs over the declination filter taps n=0, 1, 2 . . . T−1 where T is the total number of taps. The index p runs over all the elements of the combined filters p=0, 1, 2 . . . MT−1. Since the combined filter embodies all classes, no class-coupling term is present. At block 1310, the method generates the L-weighted input signal as follows:

$\begin{matrix} {{{\left\{ {F_{m}^{0},F_{m}^{1},{\ldots\mspace{14mu} F_{m}^{t = {M - 1}}}} \right\}->{\hat{F}}_{p = {{iT} + m}}} = {\hat{F}}_{p}}{where}} & (61) \\ {{\hat{F}}_{p} = {{\hat{F}}_{p = {{iT} + m}} = {\sum\limits_{\{{{j❘t} = {D(y_{j}^{\overset{\rightarrow}{x}})}}\}}{L_{j}^{u}{I\left( {\overset{\rightarrow}{z}}_{m}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}}} & (62) \end{matrix}$ At block 1315, the method extends the observation vector and correlation matrix into one joint vector and matrix for all classes. The solution equation for the combined filter has the matrix form:

$\begin{matrix} {{\hat{b}}_{q} = {\sum\limits_{n}{{\hat{H}}_{p}{\hat{A}}_{p,q}}}} & (63) \end{matrix}$ where the observation vector and correlation matrix are defined as:

$\begin{matrix} {{\hat{b}}_{q} = {\sum\limits_{\overset{\rightarrow}{x}}{{I\left( \overset{\rightarrow}{x} \right)}{{\hat{F}}_{q}\left( \overset{\rightarrow}{x} \right)}}}} & (64) \\ {{\hat{A}}_{p,q} = {\sum\limits_{\overset{\rightarrow}{x}}{{{\hat{F}}_{p}\left( \overset{\rightarrow}{x} \right)}{{\hat{F}}_{q}\left( \overset{\rightarrow}{x} \right)}}}} & (65) \end{matrix}$ At block 1320, the method extracts the solution for the combined decimation filter by direct matrix inversion: Ĥ=(Â)⁻¹ {circumflex over (b)}  (66) At block 1325, the method de-concatenates the decimation filter coefficients for each class H_(n) ^(t) are from the combined filter: Ĥ _(p) =Ĥ _(tT+n) →{H _(n) ^(t=0) ,H _(n) ^(t=1) , . . . H _(n) ^(t=M−1)}  (67) The class-coupling term is incorporated into the combined L-weighted input signal. The solution structure for the extended decimation filter is simply a matrix inversion.

The exact solution involves inverting the extended correlation matrix, which has a size of MT×MT. For some cases, the number of taps may exceed 100 for a multi-field tap, and the number of classes may exceed 128. The produces a large matrix with a correspondingly costly inversion operation. In certain applications, such as HDTV (high definition TV) or UDTV (ultra definition TV), the complexity cost may exceed available computational resources.

FIG. 14 illustrates another method of extracting multiple decimation filters according to an embodiment of the invention. In one embodiment, the method 500 may execute the method 1400 at block 520. The method reduces the complexity of the exact method illustrated in FIG. 13 by only inverting matrixes for each class. This approximate method treats the class-coupling term as a modified observation vector. The method performs multiple passes to converge on a solution with lowers but similar, performance to the exact method illustrated in FIG. 13.

The solution for the multiple decimation filters may be defined as:

$\begin{matrix} {b_{m}^{t} = {{\sum\limits_{n}{H_{n}^{t}A_{n,m}^{t}}} + {G_{m}^{t}\left( \left\{ H^{v \neq t} \right\} \right)}}} & (68) \end{matrix}$

At block 1405, the method generates a correlation matrix and observation vector for each class. At block 1410, the method generates some initial values of the decimation filters (described below in greater detail in conjunction with FIG. 15), and incorporates the class coupling term as a modification of the observation vector: {tilde over (b)} _(m) ^(t) =b _(m) ^(t) −G _(m) ^(t)({{tilde over (H)} ^(v≠t)})  (69) The solution for the multiple decimation filters takes the form:

$\begin{matrix} {{\overset{\sim}{b}}_{m}^{t} = {\sum\limits_{n}{H_{n}^{t}A_{n,m}^{t}}}} & (70) \end{matrix}$ The method obtains the solution for the decimation filter for each class t as: H ^(t)=(A ^(t))⁻¹ {tilde over (b)} ^(t)  (71) At block 1415, the method uses the decimation filter for each class to update the class-coupling term. At block 1420, the method generates a modified observation vector. At block 1425, the method uses the modified observation vector to obtain a new solution for the classified decimation filters. At block 1430, the method determines the prediction error given the new decimation filters. At block 1435, the method repeats this process for some number of iterations. Empirical data indicates that the prediction improvement saturates after 2-3 iterations. The prediction error at each stage may be computed to evaluate the effectiveness of the decimation filters at each pass. The complexity for this approximate process is order ˜2M(T)^(λ) where λ is a number between ˜2.4 and 3 depending on the matrix inversion method. This compares favorably with extraction method illustrated in FIG. 13, which has an order of complexity of ˜(MT)^(λ), especially for large number of classes M.

FIG. 15 illustrates a method of estimating initial decimation filters 1500 according to an embodiment of the invention. The prediction for a target pixel may involve multiple decimation classes, because the decimation class map is defined on the decimated data as ν=D(y _(j) ^({right arrow over (x)}))  (72) where {right arrow over (x)} is the target pixel and {j} is the prediction filter tap index. As the tap index j runs over the prediction filter tap, each decimated data point y_(j) ^({right arrow over (x)}) may have a different class assigned to it, from the class map D. The multiple classes associated with the target pixel generates the class-coupling term.

The method introduces an initial estimation of the decimation filters with a map that assigns each target pixel to one decimation class. The method may use different types of assignments. At block 1505, the method obtains a target pixel-to-decimation class map as follows: v=R({right arrow over (x)})  (73) For example: R({right arrow over (x)})=D(y _(j) _(select) ^({right arrow over (x)}))  (74) where j _(select)=sup_(j) {|L _(j) ^(u)|}  (75)

The target pixel-to-decimation map means that for the target pixel {right arrow over (x)}, the method uses the class associated with the decimated data y_(j) ^({right arrow over (x)}) that has the largest prediction filter coefficient. The largest prediction filter coefficient is found over all the prediction filter tap positions indexed by j. In other embodiments, other definitions for associating a decimation class with a target pixel may be used. At block 1510, the method generates a modified input signal from image and prediction filters. The method generates a modified input signal for each class.

The method uses the target pixel-to-decimation class map to simplify the extraction of the decimation filters. The class coupling term is zero, and the solution has the form:

$\begin{matrix} {b_{m}^{t} = {\sum\limits_{n}{H_{n}^{t}A_{n,m}^{t}}}} & (76) \end{matrix}$ At block 1515, the method modifies the correlation matrix and observation vector to contain the constraint from the map R({right arrow over (x)}). The modification is in the summation over the target pixels. The summation is now only over a partition of the full input space. In other words, only target pixels corresponding to a specific decimation class are summed. Mathematically, the method modifies the observation vector and correlation matrix as follows:

$\begin{matrix} {b_{n}^{t} = {\sum\limits_{\{{{\overset{\rightarrow}{x}❘t} = {R{(\overset{\rightarrow}{x})}}}\}}{{I\left( \overset{\rightarrow}{x} \right)}{F_{m}^{t}\left( \overset{\rightarrow}{x} \right)}}}} & (77) \\ {A_{n,m}^{t} = {\sum\limits_{\{{{\overset{\rightarrow}{x}❘t} = {R(\overset{\rightarrow}{x})}}\}}{{F_{n}^{t}\left( \overset{\rightarrow}{x} \right)}{F_{m}^{t}\left( \overset{\rightarrow}{x} \right)}}}} & (78) \end{matrix}$ where the modified L-weighted input signal is defined as:

$\begin{matrix} {{F_{m}^{t}\left( \overset{\rightarrow}{x} \right)} = {\sum\limits_{\{{j_{select}{(\overset{\rightarrow}{x})}}\}}{L_{j}^{u}{I\left( {\overset{\rightarrow}{z}}_{m}^{{\overset{\rightarrow}{y}}_{j}^{\overset{\rightarrow}{x}}} \right)}}}} & (79) \end{matrix}$ At block 1520, the method obtains the solution for the multiple decimation filters as follows: H ^(t)=(A ^(t))⁻¹ b ^(t)  (80) and extracts an initial decimation filter for each class from the modified correlation matrix and the modified correlation vector.

In one embodiment, as shown in FIG. 11A, a server computer 1101 is coupled to, and provides data through, the Internet 1105. A client computer 1103 is coupled to the Internet 1105 through an ISP (Internet Service Provider) 1107 and executes a conventional Internet browsing application to exchange data with the server 1101. Optionally, the server 1101 can be part of an ISP which provides access to the Internet for client systems. The term “Internet” as used herein refers to a network of networks which uses certain protocols, such as the TCP/IP protocol, and possibly other protocols such as the hypertext transfer protocol (HTTP) for hypertext markup language (HTML) documents that make up the World Wide Web (web). The physical connections of the Internet and the protocols and communication procedures of the Internet are well known to those of skill in the art. Access to the Internet allows users of client computer systems to exchange information, receive and send e-mails, view documents, such as documents which have been prepared in the HTML format, and receive content. It is readily apparent that the present invention is not limited to Internet access and Internet web-based sites; directly coupled and private networks are also contemplated.

One embodiment of a computer system suitable for use as server 1101 is illustrated in FIG. 11B. The computer system 1110, includes a processor 1120, memory 1125 and input/output capability 1130 coupled to a system bus 1135. The memory 1125 is configured to store instructions which, when executed by the processor 1120, perform the methods described herein. The memory 1125 may also store data for adaptive decimation filtering. Input/output 1130 provides for the delivery and display of the data for adaptive decimation filtering or portions or representations thereof and also the input of data of various types for storage, processing or display. Input/output 1130 also encompasses various types of machine-readable storage media, including any type of storage device that is accessible by the processor 1120. One of skill in the art will immediately recognize that the server 1101 is controlled by operating system software executing in memory 1125. Input/output 1130 and related media store the machine-executable instructions for the operating system and methods of the present invention as well as the data for an adaptive decimation filter.

The description of FIGS. 11A-B is intended to provide an overview of computer hardware and other operating components suitable for implementing the invention, but is not intended to limit the applicable environments. It will be appreciated that the computer system 1110 is one example of many possible computer systems which have different architectures. A typical computer system will usually include at least a processor, memory, and a bus coupling the memory to the processor. One of skill in the art will immediately appreciate that the invention can be practiced with other computer system configurations, including multiprocessor systems, minicomputers, mainframe computers, and the like. The invention can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.

An adaptive decimation filter has been described. Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement which is calculated to achieve the same purpose may be substituted for the specific embodiments shown. This application is intended to cover any adaptations or variations of the present invention. 

1. A computerized method comprising: generating a current optimized prediction filter using a previous optimized decimation filter; generating a current optimized decimation filter using the current optimized prediction filter; and interleaving the generation of the current prediction mid decimation filters until a threshold is reached, wherein generating the current optimized prediction filter comprises: applying the previous optimized decimation filter to an original frame to generate a decimated frame, the previous optimized decimation filter having a fixed value; and extracting the current optimized prediction filter from the decimated frame and the original frame using the fixed value of the previous optimized decimation filter; and wherein generating the current optimized decimation filter comprises: generating a predicted frame from the current optimized prediction filter and the decimated frame, the current optimized prediction filter having fixed value; and extracting the current optimized decimation filter from the decimated frame and the predicted frame using the fixed value of the current optimized prediction filter.
 2. The computerized method of claim 1, further comprising: generating classes for the current optimized prediction filter from the decimated frame.
 3. The computerized method of claim 1, further comprising: generating classes for the current optimized decimation filter from the predicted frame.
 4. The computerized method of claim 1, wherein extracting the current optimized prediction filter comprises minimizing a prediction error of a previous optimized prediction filter using least squares training.
 5. The computerized method of claim 1, wherein extracting the current optimized decimation filter comprises minimizing a prediction error of the previous optimized decimation filter using least squares training.
 6. A non-transitory computer-readable storage medium storing instructions which when executed by a data processing system cause the data processing system to perform operations that process data, the operations comprising: generating a current optimized prediction filter using a previous optimized decimation filter; generating a current optimized decimation filter using the current optimized prediction filter; and interleaving the generation of the current prediction and decimation filters until a threshold is reached, wherein generating the current optimized prediction comprises: applying the previous optimized decimation filter to an original frame to generate a decimated frame, the previous optimized decimation filter having a fixed value; and extracting the current optimized prediction filter from the decimated frame and the original frame using the value of the previous optimized decimation filter; and wherein generating the current optimized decimation filtter comprises: generating a predicted frame from the current optimized prediction filter and the decimated frame, the current optimized prediction filter having a fixed value; and extracting the current optimized decimation filter from the decimated frame and the predicted frame using the fixed value of the current optimized prediction filter.
 7. The non-transitory computer-readable storage medium of claim 6, the method further comprising: generating classes for the current optimized prediction filter from the decimated frame.
 8. The non-transitory computer-readable storage medium of claim 6, the method further comprising: generating classes for the current optimized decimation filter from the predicted frame.
 9. The non-transitory computer-readable storage medium of claim 6, wherein extracting the current optimized prediction filter comprises minimizing a prediction error of a previous optimized prediction filter using least squares training.
 10. The non-transitory computer-readable storage medium of claim 6, wherein extracting the current optimized decimation filter comprises minimizing a prediction error of the previous optimized decimation filter using least squares training.
 11. A system comprising: a processor coupled to a bus; a memory coupled to the processor through the bus; and instructions executed by the processor from the memory to cause the processor to generate current optimized prediction filter using a previous optimized decimation filter; generate a current optimized decimation filter using the current optimized prediction filter; and interleave the generation of the current prediction and decimation filters until a threshold is reached, wherein the instructions further cause the processor, when generating the current optimized prediction filter, to apply the previous optimized decimation filter to an original frame to generate a decimated frame, the previous optimized decimation filter having a fixed value, extract the current optimized prediction filter from the decimated frame and the original frame using the fixed value of the previous optimized decimation filter, and wherein the instructions further cause the processor, when generating the current optimized decimation filter, to generate a predicted frame from the current optimized prediction filter and the decimated frame, the current optimized prediction filter having a fixed value, and extract the current optimized decimation filter from the decimated frame and the predicted frame using the fixed value of the current optimized prediction filter.
 12. The system of claim 11, the instructions further causing the processor to generate classes for the current optimized decimation filter from the predicted frame.
 13. The system of claim 11, the instructions further causing the processor to generate classes for the current optimized decimation filter from the predicted frame.
 14. The system of claim 11, wherein extracting the current optimized prediction filter comprises minimizing a prediction error of a previous optimized prediction filter using least squares training.
 15. The system of claim 11, wherein extracting the current optimized decimation filter comprises minimizing a prediction error of the previous optimized decimation filter using least squares training. 